package indi.zhk.nocturne.ioc.factory;

import indi.zhk.nocturne.ioc.entity.BeanDefinition;

/**
 * @author 赵洪苛
 * @date 2021/6/19 17:42
 **/
public interface BeanFactory {

    /**
     * 通过对象ID获取
     * @param name 对象ID
     * @return 实例对象
     */
    Object getBean(String name);

    /**
     * 通过类获取
     * @param clazz 类
     * @param <T> 类泛型
     * @return 实例对象
     */
    <T> T getBean(Class<T> clazz);

    /**
     * 注册实例对象的定义
     * @param name 对象名
     * @param beanDefinition 实例对象
     */
    void registerBeanDefinition(String name, BeanDefinition beanDefinition);

}
